home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
program
/
168
/
hd.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-03-31
|
1KB
|
67 lines
/* dump the contents of a file in hex words */
#include <stdio.h>
main(argc, argv) int argc; char *argv[]; {
int i;
FILE *f;
for (i = 1; i < argc; i++) {
printf("%s\n", argv[i]);
if ((f = fopen(argv[i], "rb")) != NULL) {
hd(f);
fclose(f);
}
}
return 0;
}
hd(f) FILE *f; {
int offset, cnt, hi, lo, i, word[8];
offset = 0;
cnt = 8;
while (cnt == 8) {
puthex(offset, 4);
putchar(':');
putchar(' ');
for (cnt = 0; cnt < 8; ) {
if ((hi = getc(f)) == EOF) break;
offset++;
if ((lo = getc(f)) == EOF) {
word[cnt++] = (hi << 8);
break;
}
else {
word[cnt++] = (hi << 8) + lo;
offset++;
}
}
for (i = 0; i < cnt; i++) {
puthex(word[i], 4);
putchar(' ');
}
for ( ; i < 8; i++) printf(" ");
printf(" | ");
for (i = 0; i < cnt; i++) {
putcx(word[i] >> 8);
putcx(word[i]);
}
putchar('\n');
}
if (cnt != 0) {
puthex(offset, 4);
putchar('\n');
}
}
puthex(n, size) {
if (size > 1) puthex(n >> 4, size - 1);
putchar("0123456789ABCDEF"[n & 15]);
}
putcx(c) {
c = c & 255;
if (c >= 32 && c <= 127) putchar(c);
else putchar('.');
}